The popularity of mobile computing and communications devices has created a corresponding wish for the ability to deliver and receive information whenever wanted by users. Put simply, users want ubiquitous access to information and applications from a variety of devices, wherever, whenever, and whatever the devices' capabilities, and in addition, users want to be able to access and update such information on the fly, and they want guarantees that the data is as correct and up to date as can be.
There are a variety of distributed data systems that attempt to have devices and objects share replicas of data with one another. For instance, music sharing systems may synchronize music between a PC, a Cell phone, a gaming console and an MP3 player. Email data may be synchronized among a work server, a client PC, and a portable email device. However, today, to the extent such devices synchronize a set of common information with each other, the synchronization takes place according to a static setup among the devices. However, when these devices become disconnected frequently or intermittently, i.e., when they are loosely coupled such that they may become disconnected from communicating with each other, e.g., when a cell phone is in a tunnel, or when the number of devices to be synchronized is dynamic, it becomes desirable to have a topology independent way for the devices to determine what changes each other device does not know when they re-connect to one another, or as they join the network.
Today, as shown in FIG. 1, there are various examples where a master node 100 synchronizes in a dedicated manner with a client node 110, such as when an email server synchronizes with an email client. Due to the dedicated synchronization between the two devices, the information 102 used to synchronize between the two devices can be tracked by the master node 100. Such information 102 can also optionally be tracked by client node 110 as well, however, when the connection between master node 100 and client node 110 becomes disconnected at times, or when the number of synchronizing devices can suddenly increase or decrease, tracking the necessary information of the common information that each device uses to synchronize across all of those devices becomes a difficult problem.
Current solutions often base their synchronization semantics solely on clocks or logical watermarks for a specific node (e.g., the email server), as opposed to any node. These systems can work well in cases of a single connecting node or master. However, they run into problems when the topology or pattern in which the nodes connect can change unpredictably.
Other systems build proprietary synchronization models for specific kinds of data objects, tracking an enormous amount of primitive metadata specific to the data format across the devices in order to handle the problem. For instance, to synchronize objects of a particular Word processing document format, a lot of overhead and complexity goes into representing a document and its fundamental primitives as they change over time, and representing that information efficiently to other devices wishing to synchronize according to a common set of Word processing documents. In addition to such systems being expensive and complex to build and non-extendible due to the custom data format upon which they are based, such systems are inherently unscalable due to large amounts of metadata that must be generated, analyzed and tracked.
In addition, such solutions apply only to the one specific domain, e.g., Word processing documents. When synchronization objects of all kinds are considered, e.g., pictures, videos, emails, documents, database stores, etc., one can see that implementing custom synchronization solutions based on each object type for tracking evolution of such objects across all devices in a multi-master environment is unworkable today. Accordingly, such solutions inextricably link synchronization semantics with the data semantics.
Thus, there is a need for node-independent synchronization knowledge when computers in a topology change the way they connect to each other or as the number of computers grows. For instance, with a media player, it might be desirable to synchronize among multiple computers and multiple websites. In most instances, most applications can only synchronize data between a few well-known endpoints (home PC and media player). As the device community evolves over time for a user of the media player application, however, the need for data synchronization flexibility for the music library utilized by the devices increases, thereby creating the need for a more robust system.
The need becomes even more complex when one considers differing scopes of synchronization of items among various devices. In this regard, a synchronization scope defines what items, if any, are synchronized for a given device and to what other devices. For instance, if an item is being synchronized across various devices and across various synchronization scopes among those devices, keeping track of changes to that item becomes a complex problem. While for any given application, as described above, logic can be hardwired to handle the problem of differing scopes, a simple, topology independent solution eludes the art. While devices within a first scope have a view into which other device within the first scope have made a given change, and therefore can appreciate what changes require making or not making unto itself, changes originating from a device of another set of devices according to another scope are not natively appreciated by the devices within the first scope without the introduction of massive amounts of metadata that grows unacceptably large over time and in proportion to the number of other devices and different synchronization scopes for those devices. Accordingly, a way to limit the proliferation of this metadata would be desirable.
The above-described deficiencies of today's synchronization systems are merely intended to provide an overview of some of the problems of conventional systems, and are not intended to be exhaustive. Other problems with conventional systems and corresponding benefits of the various non-limiting embodiments described herein may become further apparent upon review of the following description.